package com.niuwa.p2p.core.utils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

	/**
	* @author zxn
	* @version 创建时间：2014-7-2 上午11:40:40
	*
	*/
	public class ImageBase64Utils {
	
	/**
	* 将网络图片进行Base64位编码
	* @param imgUrl
	* 图片的url路径，如http://.....xx.jpg
	* @return
	*/
	
	//随机验证码字符串 
	//线程安全问题，此方法暂停使用
	/*static String redomStr =new String();
	
	public static String getRedomStr() {
		return redomStr;
	}

	public static void setRedomStr(String redomStr) {
		ImageBase64Utils.redomStr = redomStr;
	}

	public static String encodeImgageToBase64() {// 将图片文件转化为字节数组字符串，并对其进行Base64编码处理
	    redomStr=RandomImageGenerator.randomString(4);
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		try {
			RandomImageGenerator.render(redomStr,outputStream ,100,35);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	// 对字节数组Base64编码

	BASE64Encoder encoder = new BASE64Encoder();
	return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
	
	}*/
	
	public static Map<String, Object> encodeImgageToBase64Map() {// 将图片文件转化为字节数组字符串，并对其进行Base64编码处理 返回Map
		Map<String, Object> result = new HashMap<String, Object>();
		String redomStr =RandomImageGenerator.randomString(4);
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		try {
			RandomImageGenerator.render(redomStr,outputStream ,100,35);
		} catch (IOException e) {
			e.printStackTrace();
		}
		// 对字节数组Base64编码
		BASE64Encoder encoder = new BASE64Encoder();
		result.put("base64String", encoder.encode(outputStream.toByteArray()));
		result.put("radomStr", redomStr);
		return result;// 返回Base64编码过的字节数组字符串
	}
	
	/**
	* 将Base64位编码的图片进行解码，并保存到指定目录
	* @param base64
	* base64编码的图片信息
	* @return
	*/

	public static void decodeBase64ToImage(String base64, String path,

	String imgName) {

	BASE64Decoder decoder = new BASE64Decoder();

	try {

	FileOutputStream write = new FileOutputStream(new File(path

	+ imgName));

	byte[] decoderBytes = decoder.decodeBuffer(base64);

	write.write(decoderBytes);

	write.close();

	} catch (IOException e) {

	e.printStackTrace();

	}

	}

	
//	public static void main(String[] args) {
//		
//	String base64String=encodeImgageToBase64();
//	decodeBase64ToImage(base64String, "e:/",
//
//			"testBase64");	
//	
//	
//	}
	
	}

